precision mediump float;
uniform vec2 u_resolution;

void main(void) {
    // 将屏幕坐标转换为网格坐标
    vec2 uv = (gl_FragCoord.xy * 30. - u_resolution.xy) / min(u_resolution.x, u_resolution.y);
    
    // 计算网格线 - 改进的方法
    float gridX = 1.0 - smoothstep(0.0, 0.1, abs(mod(uv.x, 1.0) - 0.05));
    float gridY = 1.0 - smoothstep(0.0, 0.1, abs(mod(uv.y, 1.0) - 0.05));
    
    // 黑色背景
    vec3 bgColor = vec3(0.0);
    // 蓝色网格线
    vec3 gridColor = vec3(0.0, 0.0, 1.0);
    
    // 合并网格线
    float grid = clamp(gridX + gridY, 0.0, 1.0);
    
    // 混合背景和网格线颜色
    vec3 color = mix(bgColor, gridColor, grid);
    
    gl_FragColor = vec4(color, 1.0);
}